# coding: UTF-8
# ----------
# Project_Name : pythonProject
# File_Name : 元素的查找和定位.py
# Author : asus
# Date_Time:2022/4/21 10:03
# Description :
# ----------
"""
元素的查找是基于webdriver的对象driver
元素的操作基于webElement类
"""
from selenium import webdriver
import time

from selenium.webdriver.common.by import By


def foo1():
    driver = webdriver.Chrome()
    driver.get("http://www.baidu.com/")

    #1.先找到元素
    element = driver.find_element(By.ID,"kw")
    #2.对找到元素进行操作
    element.send_keys("51放假安排")#模拟键盘输入
    time.sleep(5)#停留时间5秒

    driver.quit()
def foo2():
    """
    通过name属性定位
    :return:
    """
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get("http://www.baidu.com/")

    driver.find_element(By.NAME,"wd").send_keys("51放假安排")#调用webelement里面的send_keys的值
    time.sleep(5)

    driver.quit()
def foo3():
    """
    通过classsname定位元素
    一般用于定位多个元素
    :return:None
    """
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get("http://www.baidu.com/")

    els = driver.find_elements(By.CLASS_NAME,"mnav")
    for el in els:
        print(el.text)   # 打印元素的文本内容

    time.sleep(5)

    driver.quit()

def foo4():
    """
    通过link text定位元素
    只针对<a>标签，其他类型元素不能用
    :return:None
    """
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get("http://www.baidu.com/")

    driver.find_element(By.LINK_TEXT, "新闻").click()#模拟鼠标左键点击


    time.sleep(5)

    driver.quit()
def foo5():
    """
    通过partial link text定位元素
    只针对<a>标签，其他类型元素不能用
    :return:None
    """
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get("http://www.baidu.com/")

    driver.find_element(By.LINK_TEXT, "新闻").click()#模拟鼠标左键点击


    time.sleep(5)

    driver.quit()
def foo6():
    """
    通过tag name定位元素
    通过标签名字定位多个元素
    :return:None
    """
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get("http://www.baidu.com/")

    els = driver.find_elements(By.TAG_NAME, "a")
    for el in els:
        print(el.text)


    driver.quit()
def foo7():
    """
    通过css定位元素
    通过层叠样式定位元素
    :return:None
    """
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get("http://www.baidu.com/")

    driver.find_element(By.CSS_SELECTOR, "#s-top-left > a:nth-child(3)").click()
    time.sleep(3)
    driver.quit()
def foo8():
    """
    通过xpath定位元素
    最强大最慢的定位方式
    :return:None
    """
    driver = webdriver.Chrome()
    driver.maximize_window()

    driver.get("http://www.baidu.com/")

    driver.find_element(By.XPATH, '//*[@id="s-top-left"]/a[4]').click()#  注意//前面的符号“” 或者‘  就近原则
    time.sleep(3)
    driver.quit()

if __name__=="__main__":  #
    # foo1()  #ctrl  +  /   快捷注释
    # foo2()
    # foo3()
    # foo4()
    # foo5()
    foo6()
    # foo7()
    # foo8()


